public class Solution2 {
    //面试题 08.01. 三步问题
    public int waysToStep(int n) {
        //dp[i] 表示到第i个台阶的走法
        if (n == 1 || n == 2) return n;
        if (n == 3) return 4;
        int[] dp = new int[n+1];
        dp[1] = 1;dp[2] = 2;dp[3] = 4;
        int MOD = (int)1e9 + 7;
        //dp[3] = dp[2] + dp[1] + dp[0];
        for (int i = 4; i <= n; i++) {
            dp[i] = ((dp[i-1]  + dp[i-2]) % MOD + dp[i-3]) % MOD;
        }
        return dp[n];
    }
}
